/*
    Hay 2 entidades importantes : EL RECEPTOR, y el EMISOR.

    El RECEPTOR es el que tiene el archivo “viejo”;
    y quiere actualizar.

    EL EMISOR es el que tiene el archivo “nuevo”;
    y debe señalarle los cambios al RECEPTOR.

    ( no confundir con cliente / servidor )
    Detectar que archivo es “nuevo” o “viejo” queda fuera del scope de esta clase
*/

#ifndef EMISORDELTA_H_INCLUDED
#define EMISORDELTA_H_INCLUDED

#include <list>

#include "DeltaHashes.h"
#include "PaqueteHashEmisor.h"
#include "PaqueteHashReceptor.h"
class EmisorDelta:public DeltaHashes{
    private:
    std::list<PaqueteHashEmisor> ListaRollingH;
    public:

    EmisorDelta(){};

    ~EmisorDelta(){};

    void CalcularHashesVarios();

    unsigned int getCantDePedazos()
    {
        return this->ListaRollingH.size();
    }

    std::list<PaqueteHashEmisor>::const_iterator IteratorSobreHashes()
    {
        return this->ListaRollingH.begin();
    }

    //Comparar con la lista de paquetes de hashes del Receptor que me pasaron
    // Devuelve una lista de diferenciales para que el RECEPTOR pueda
    // obtener la misma version que el EMISOR
    DatosTrasmitidos<Diferencial> compararConHashesDelReceptor(const DatosTrasmitidos<PaqueteHashReceptor>& HashPRep );

};

#endif // EMISORDELTA_H_INCLUDED
